﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using HelperClasses;
using System.Collections.Specialized;

namespace HtmlHelper
{
    public class XhtmlAttributeCollection
    {
        private NameValueCollection attributes = new  NameValueCollection();

        private string f_html = "";
        //public string Html
        //{
        //    get
        //    {
        //        if (this.f_isDirty)
        //        {
        //            this.f_html = "";
        //            for (int i = 0; i < this.attributes.Count; i++)
        //            {
        //                if (this.f_html != "")
        //                {
        //                    this.f_html += " ";
        //                }
        //                this.f_html += this.attributes[i].Value.Html;
        //            }
        //        }
        //        return this.f_html;
        //    }
        //}

        //public  XhtmlAttributeCollection(string html)
        //{
        //    string[] attr = XhtmlRegex.SpliteAttributes(html);
        //    for (int i = 0; i < attr.Length; i++)
        //    {
        //        this.Add(attr[i]);
        //    }
        //}
        //public string this[string name]
        //{
        //    get
        //    {
        //        return this.attributes[name.ToLower().Trim()].AttributeValue;
        //    }
        //    set
        //    {
        //        XhtmlAttribute ha= new XhtmlAttribute(name, value);
        //        if (this.attributes.ContainsKey(name.ToLower().Trim()))
        //        {
        //            if (this.attributes[name.ToLower().Trim()].Html != ha.Html)
        //            {
        //                this.attributes[name.ToLower().Trim()] = ha;
        //                this.IsDirty = true;
        //            }
        //        }
        //        else
        //        {
        //            this.attributes[name.ToLower().Trim()] = ha;
        //            this.IsDirty = true;
        //        }
        //    }
        //}
        //public XhtmlAttribute this[int index]
        //{
        //    get
        //    {
        //        return this.attributes[index].Value;
        //    }
        //    set
        //    {
        //        this.attributes.RemoveAt(index);
        //        this.attributes.InsertAt(index, value.AttributeName, value);
        //        this.IsDirty = true;
        //    }
        //}
        //public void Add(XhtmlAttribute ha)
        //{
        //    this.attributes[ha.AttributeName] = ha;
        //    this.IsDirty = true;
        //}
        //public void Add(string html)
        //{
        //    XhtmlAttribute ha = new XhtmlAttribute(html);
        //    this.Add(ha);
        //}
        //public void Add(string attributeName, string attributeValue)
        //{
        //    XhtmlAttribute ha = new XhtmlAttribute( attributeName,  attributeValue);
        //    this.Add(ha);
        //}
        public void Remove(string name)
        {
            this.attributes.Remove(name.ToLower().Trim());
            this.IsDirty = true;
        }
        //public void RemoveAt(int index)
        //{
        //    this.attributes.RemoveAt(index);
        //    this.IsDirty = true;
        //}
        public void Clear()
        {
            this.attributes.Clear();
            this.IsDirty = true;
        }
        
        private bool f_isDirty = true;
        internal bool IsDirty
        {
            get
            {
                return f_isDirty;
            }
            set
            {
                f_isDirty = value;
                if (value && this.f_owner != null)
                {
                    this.f_owner.IsDirty = true;
                }
            }
        }

        private XhtmlElement f_owner = null;
        internal XhtmlElement owner
        {
            get { return f_owner; }
            set { f_owner = value; }
        }

    }
}
